Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development #479

Merged
merged 5 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading