Skip to content

Commit

Permalink
Merge pull request #479 from harena-lab/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
santanche authored Feb 8, 2024
2 parents a85efb7 + 849e210 commit ec223a7
Show file tree
Hide file tree
Showing 8 changed files with 390 additions and 27 deletions.
8 changes: 8 additions & 0 deletions src/adonisjs/public/importer/documents/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,15 @@ <h3 class="ml-3 text-secondary">Documents to Import:</h3>
</div>
<button type="submit" class="btn btn-success my-2 disabled-look" id="btn-import">Import</button>
<dcc-button label="Import" xstyle="out" location="btn-import" topic="author/import/documents"></dcc-button>
<button type="submit" class="btn btn-success my-2 disabled-look" id="btn-samples">Samples</button>
<dcc-button label="Samples" xstyle="out" location="btn-samples" topic="author/select/samples"></dcc-button>
</form>

<ul>
<li><b>Import</b> - imports documents to annotate from a CSV: each row contains the <i>title</i> and <i>document</i>.</li>
<li><b>Sample</b> - samples existing imported documents in a new Quest and Room: each row contains the <i>id</i> of the selected case</li>
</ul>

</div>
</div>

Expand Down
79 changes: 77 additions & 2 deletions src/adonisjs/public/importer/js/importer.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
class ImporterManager {

constructor(){
constructor (){
this._totalReady = 0
this._updateCSV = this._updateCSV.bind(this)
MessageBus.i.subscribe('table/updated', this._updateCSV)
this._importDocuments = this._importDocuments.bind(this)
MessageBus.i.subscribe('author/import/documents', this._importDocuments)
MessageBus.i.subscribe('author/select/samples',
this._importSampleSelection.bind(this))
this._preStart = this._preStart.bind(this)
MessageBus.i.subscribe('control/dhtml/ready', this._preStart)
MessageBus.i.publish('control/dhtml/status/request')
Expand Down Expand Up @@ -33,7 +35,7 @@ class ImporterManager {
this._settingsFromUrl()
}

_settingsFromUrl(){
_settingsFromUrl () {
let url = new URL(document.location)
try {
if(url.searchParams.get('quest')){
Expand Down Expand Up @@ -171,6 +173,79 @@ class ImporterManager {
}, 8000)
}
}

async _importSampleSelection (topic, message) {
console.log('=== import sample selection')
console.log(document.querySelector('#btn-samples').form.checkValidity())
console.log(this._table)
if(document.querySelector('#btn-samples').form.checkValidity() &&
this._table != null) {
const questId = document.querySelector('#quests').value
console.log('=== quest selected')
console.log(questId)

const roomId = document.querySelector('#rooms').value
console.log('=== room selected')
console.log(roomId)

const schema = this._table.schema
const content = this._table.content

for (let line = 0; line < content.length; line++) {
const caseId = content[line][0]
let csq = await MessageBus.i.request('link/quest/post',
{
questId: questId,
caseId: caseId,
orderPosition: line
}
)
if (csq.message.error) {
console.log('--- error')
console.log(csq.message.error)
} else {
console.log('--- link quest success')
let rmq = await MessageBus.i.request('link/room/post',
{
room_id: roomId,
case_id: caseId
}
)
if (rmq.message.error) {
console.log('--- error')
console.log(rmq.message.error)
} else {
console.log('--- link room success')
}
}
}
}
if(this._table == null){
let alert = document.querySelector('#alert-feedback')
alert.innerHTML = ""
let header = document.createElement('h4')
header.innerHTML = '<b>Empty table!</b>'
header.classList.add('alert-header')
header.style.color = '#721c24'
alert.classList.add('alert-danger', 'alert-dismissible', 'show')
alert.classList.remove('alert-success')
alert.insertAdjacentElement('afterbegin', header)
alert.insertAdjacentText('beforeend','You have to drag a csv containing the list of the selected documents id in the "drag zone"')
alert.style.display = 'block'
alert.insertAdjacentHTML('beforeend',`
<button type="button" class="close" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>`)
alert.querySelector('button.close').onclick = function() {
alert.classList.remove('show')
alert.style.display = 'none'
}
setTimeout(function(){
alert.classList.remove('show')
alert.style.display = 'none'
}, 8000)
}
}
}

(function () {
Expand Down
14 changes: 10 additions & 4 deletions src/adonisjs/public/infra/dcc-logger-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,29 @@ class DCCLoggerManager extends DCCLight {

this._notifyLogger = this._notifyLogger.bind(this)
this._subscribe('case/summary/#', this._notifyLogger)
this._subscribe('case/track/#', this._notifyLogger)
}

async _notifyLogger (topic, message, track) {
if (track) {
if (message.userId != null)
delete message.userId
let caseId = null
if (message.caseId != null) {
caseId = message.caseId
delete message.caseId
}
message.logType = MessageBus.extractLevel(topic, 2)
let logger = await MessageBus.i.request('logger/create/post',
{
caseId: message.caseId,
caseId: caseId,
instanceId: MessageBus.extractLevel(topic, 3),
log: JSON.stringify(message)
}
)
if (logger.message.error) {
console.log('--- error')
console.log(logger.message.error)
} else {
console.log('=== success ===')
console.log(logger.message)
}
}
}
Expand Down
165 changes: 165 additions & 0 deletions src/adonisjs/public/player/case/tracker-no-login.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Tracker Download</title>

<link rel="stylesheet" href="/player/css/player.css">

<link rel="stylesheet" href="/author/css/author.css">

<script src="/lib/axios-0.21.0/axios.min.js"></script>

<script src="/lib/jquery-3-4-1/jquery-3.4.1.slim.min.js"></script>
<script src="/lib/popper-1-15-0/popper.min.js"></script>
<script src="/lib/bootstrap-4.4.1/js/bootstrap.min.js"></script>

<script src="/config/config.js"></script>
<script src="/dccs/infra/bus.js"></script>

<script src="/dccs/base/primitive-dcc.js"></script>
<script src="/dccs/base/scope-dcc.js"></script>
<script src="/dccs/base/dcc.js"></script>
<script src="/dccs/base/dcc-base.js "></script>
<script src="/dccs/base/dcc-visual.js "></script>

<script src="/infra/basic.js"></script>
<script>
Basic.service.rootPath = '../../'
</script>

<script src="/infra/dcc-common-server-proxy.js"></script>
<script src="/infra/dcc-common-server-address.js"></script>
<script src="/infra/simple-page-tasks.js"></script>
<!-- <script src="/infra/token-validator.js"></script> -->

<script src="/dccs/base/dcc-block.js"></script>
<script src="/dccs/base/dcc-light.js "></script>

<script src="/dccs/components/visual/dcc-button.js"></script>
<script src="/dccs/components/visual/dcc-notice-input.js"></script>

<script src="/dccs/components/web/dcc-rest.js"></script>
<script src="/dccs/components/web/dcc-include.js"></script>
<script src="/dccs/components/web/dcc-dhtml.js"></script>

<script src="/dccs/components/data/dcc-table-csv.js"></script>
<script src="/dccs/components/data/dcc-submit.js"></script>
<script src="/dccs/components/data/dcc-model.js"></script>
<script src="/dccs/components/data/dcc-record.js"></script>

<script src="/dccs/base/subscribe-dcc.js"></script>
<script src="/dccs/base/trigger-dcc.js"></script>
<script src="/dccs/base/property-dcc.js"></script>
<script src="/dccs/base/connect-dcc.js"></script>

<script src="/infra/dcc-rest-proxy.js"></script>
<script src="/infra/proxy/dcc-proxy-case.js"></script>
<script src="/infra/dcc-basic.js"></script>
<script src="/infra/dcc-logger.js"></script>
<script src="/infra/dcc-logger-manager.js"></script>

<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="shortcut icon" href="/icons/favicon.ico">
<link rel="manifest" href="/site.webmanifest">

<link rel="stylesheet" href="/lib/fontawesome-5-10-1/css/all.min.css">
<link rel="stylesheet" href="/lib/bootstrap-4.4.1/css/bootstrap.min.css">

<link rel="stylesheet" href="/dccs/css/dccs.css">
<link rel="stylesheet" href="/dccs/css/properties.css">
<link rel="stylesheet" href="/infra/css/common-player.css">
<link rel="stylesheet" href="/infra/css/common-author.css">

<script src="/author/js/dcc-author-server-proxy.js"></script>

<script src="/author/js/create.js"></script>
<script src="/author/js/template-case.js"></script>
<script src="/author/js/draft.js"></script>

<script src="/context/context.js"></script>

<script src="/dccs/components/control/dcc-timer.js"></script>
<script src="/dccs/components/control/dcc-compute.js"></script>
<script src="/dccs/components/control/dcc-message.js"></script>

<script src="/dccs/components/visual/dcc-markdown.js"></script>
<script src="/dccs/components/visual/dcc-annotation.js"></script>
<script src="/dccs/components/visual/dcc-expression.js"></script>
<script src="/dccs/components/visual/dcc-character.js"></script>
<script src="/dccs/components/visual/dcc-lively-dialog.js"></script>
<script src="/dccs/components/visual/dcc-state-select.js"></script>
<script src="/dccs/components/visual/dcc-image-marker.js"></script>
<script src="/dccs/base/dcc-styler.js"></script>
<script src="/dccs/components/visual/dcc-entity.js"></script>
<script src="/dccs/components/visual/dcc-input.js"></script>
<script src="/dccs/components/visual/dcc-input-typed.js"></script>
<script src="/dccs/components/visual/dcc-input-choice.js"></script>
<script src="/dccs/components/visual/dcc-input-table.js"></script>
<script src="/dccs/components/visual/dcc-input-summary.js"></script>
<script src="/dccs/components/visual/dcc-chart.js"></script>
<script src="/dccs/components/visual/dcc-slider.js"></script>
<script src="/dccs/components/visual/dcc-report.js"></script>

<!-- bundle cellular -->
<script src="/dccs/components/cell/dcc-space-cellular.js"></script>
<script src="/dccs/components/cell/dcc-cell.js"></script>
<script src="/dccs/components/cell/dcc-cell-color.js"></script>
<script src="/dccs/components/cell/dcc-cell-image.js"></script>
<script src="/dccs/components/cell/dcc-cell-ruler.js"></script>
<script src="/dccs/components/cell/rule-dcc-cell.js"></script>
<script src="/dccs/components/cell/rule-dcc-cell-transition.js"></script>
<script src="/dccs/components/cell/rule-dcc-cell-neighbor.js"></script>
<script src="/dccs/components/cell/rule-dcc-cell-expression.js"></script>

<script src="/lib/showdown/showdown.min.js"></script>

<script src="/translator/translator.js"></script>
<script src="/translator/item-templates.js"></script>

<script src="/player/js/dcc-player-server-proxy.js"></script>
<script src="/player/js/htracker.js"></script>
<script src="/player/js/state.js"></script>
<script src="/player/js/metaplayer.js"></script>
<script src="/player/js/player.js"></script>
<script src="/player/js/caselist.js"></script>

<script>
function start () {
MessageBus.i.subscribe('download/track', download)
}

function download () {
let d = new Date();

let day = d.getDay().toString();
let month = d.getMonth().toString();
let h = d.getHours().toString();
let m = d.getMinutes().toString();
let s = d.getSeconds().toString();

let chave = Math.floor(Math.random() * (9000 - 1 + 1)) + 1;
let strkey = day + month + h + m + s + chave.toString();

const ui = sessionStorage.getItem('harena-user-id')
const trk = localStorage.getItem('harena-track')
const st = localStorage.getItem('harena-state')

const a = document.createElement('a')
a.style.display = 'none'
document.body.appendChild(a)
a.href = window.URL.createObjectURL(
new Blob([ui, '\n\n[[TRACK]]\n\n', trk,'\n\n[[STATE]]\n\n',st], {type: 'text/plain'}))
a.setAttribute('download', `case${strkey}.track`)
a.click()
window.URL.revokeObjectURL(a.href)
document.body.removeChild(a)
}
</script>
</head>
<body onload="start()">
<dcc-button label="Download Track" topic="download/track"></dcc-button>
</body>
</html>
Loading

0 comments on commit ec223a7

Please sign in to comment.