Desktop.razor 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. @page "/desktop"
  2. @*@page "/desktop/{docID:int}"*@
  3. @attribute [Authorize]
  4. <div class="blocks">
  5. <div class="first-block">
  6. <div class="top__block">
  7. <div class="header-block header-block_first">
  8. <div class="header-block__text">Календарь событий</div>
  9. <div class="header-block__span">
  10. <span></span>
  11. <span></span>
  12. <span></span>
  13. </div>
  14. </div>
  15. <div class="slider">
  16. <div class="slider__item">
  17. Тема: Цифровой двойник синтеза метанола <br>
  18. Организатор: ООО«ПроК» <br>
  19. Дата проведения: с 1 дек. по 30 дек. 2021 года <br>
  20. Формат: Цифровой хакатон <br>
  21. Статус: Открыта регистрация <br>
  22. ID: Dh001<br>
  23. </div>
  24. </div>
  25. <div class="footer-block">
  26. <div class="footer-block__left__button">
  27. <img src="img/left_button.svg" alt="">
  28. <p>Влево</p>
  29. </div>
  30. <div class="footer-block__right__button">
  31. <p>Вправо</p>
  32. <img src="img/right_button.svg" alt="">
  33. </div>
  34. </div>
  35. </div>
  36. <div class="bottom__block">
  37. <div class="first-block__inforamtion__box">
  38. <div class="header-block header-block_first">
  39. <div class="header-block__text">Описание мероприятия</div>
  40. <div class="header-block__span">
  41. <span></span>
  42. <span></span>
  43. <span></span>
  44. </div>
  45. </div>
  46. <div class="first-block__inforamtion">
  47. <p>
  48. Цели хакатона <a class="first-block__inforamtion__item" href="">Почитать про формат</a><br>
  49. Создание экспертного сообщества по теме разработки математической модели<br>
  50. </p>
  51. <p>Создание библиотеки знаний <a class="first-block__inforamtion__item" href="">Посмотреть библиотеку</a> по синтезу метанола в нефтехимической промышленности</p>
  52. <p>Обучение работы с цифровыми решениями 2DH: <br>-с большими массивами данных и информации<br>-извлечения ценных знаний из неструктурированных данных и информации</p>
  53. <a class="first-block__inforamtion__item" href="">Почитать правила</a>
  54. <p>
  55. Бюджет: 1 200 2dh <br>
  56. Рейтинг прохождения: +250mmr
  57. </p>
  58. <p>Зарегистрировалось 24 пользователя</p>
  59. </div>
  60. </div>
  61. <div class="first-block__inforamtion__button">
  62. <button class="btn_grey">Подать заявку</button>
  63. <button class="btn_grey">Сохранить</button>
  64. <button class="btn_grey">Поделиться</button>
  65. </div>
  66. </div>
  67. </div>
  68. <div class="second-block">
  69. <div class="header-block header-block_second">
  70. <div class="header-block__text">Рабочий стол</div>
  71. <div class="header-block__span" @onclick="@(() => WidgetMenuClick(".block__dropbox", "desktop_menu"))">
  72. <span></span>
  73. <span></span>
  74. <span></span>
  75. </div>
  76. </div>
  77. <div class="block__dropbox" id="desktop_menu">
  78. <p class="block__dropbox__header__text">Выбрать действие</p>
  79. <a class="block__dropbox__search" style="cursor:pointer" @onclick="NewDocument">Новый документ</a>
  80. </div>
  81. <div class="second-block__button">
  82. <button class=@_uploadButtonClass @onclick="(() => SwitchDesktopTab(0))" disabled=@loadButtonDisable>Загрузка</button>
  83. <button class=@_verifyButtonClass @onclick="(() => SwitchDesktopTab(1))" disabled=@verifyButtonDisable>Верифицировать</button>
  84. <button class=@_otherButtonClass @onclick="(() => SwitchDesktopTab(2))">Другое</button>
  85. </div>
  86. <div class=@_uploadTabClass>
  87. <EditForm Model="@_article">
  88. <p>Загрузка материала</p>
  89. <label class="upload__label">
  90. <select class="form-control upload__input">
  91. <option value="">Выберете мероприятие</option>
  92. <option selected value="hackathon22_01">Хакатон 2022</option>
  93. </select>
  94. </label>
  95. <div class="second-block__input__file__label__box">
  96. <InputFile class="second-block__input__file" id="input_file" OnChange="@HandleUpload"
  97. accept="application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document,
  98. text/html, text/plain, application/rtf" />
  99. <label for="input_file" class="second-block__input__file__label" id="file_label">
  100. <span>+</span>
  101. <p>Прикрепить файл</p>
  102. </label>
  103. @*@_article.Filename*@
  104. </div>
  105. <div class="upload__input-descr">Status: @_status</div>
  106. <label class="upload__label">
  107. <InputText type="text" placeholder="Наименование статьи" class="form-control upload__input" @bind-Value="_article.Name" />
  108. </label>
  109. <label class="upload__label">
  110. <InputDate type="date" placeholder="Дата издания" class="form-control upload__input" @bind-Value="_article.PublishDate" />
  111. </label>
  112. <label class="upload__label">
  113. <InputText type="text" placeholder="Автор" class="form-control upload__input" @bind-Value="_article.Authors" />
  114. <div class="upload__input-descr">+ Добавить автора. Указывать имена авторов через запятую</div>
  115. </label>
  116. <label class="upload__label">
  117. <InputTextArea placeholder="Аннотация" class="form-control upload__textarea" @bind-Value="_article.Annotation" />
  118. </label>
  119. <label class="upload__label">
  120. <InputText type="text" placeholder="Ключевые слова" class="form-control upload__input" @bind-Value="_article.Keywords" />
  121. </label>
  122. <div class="second-block__form__button">
  123. <button class="btn_grey" @onclick="SendToVerify_OnClick">Отправить на верификацию</button>
  124. <button class="btn_grey" @onclick="(() => SaveDocument_OnClick(Models.ArticleStatus.Saved))">Сохранить</button>
  125. </div>
  126. </EditForm>
  127. </div>
  128. <div class=@_verifyTabClass>
  129. <p>Валидация материала</p>
  130. <label class="upload__label upload__label_mb">
  131. <select class="form-control upload__input" @onchange="DocSelect_OnChange">
  132. <option value="">Выберите материал</option>
  133. @foreach (var article in AppData.Articles)
  134. {
  135. if (article.Value.ID == _article.ID)
  136. _articleDropdownOption = $"<option selected value={article.Value.ID}>{article.Value.Name}</option>";
  137. else
  138. _articleDropdownOption = $"<option value={article.Value.ID}>{article.Value.Name}</option>";
  139. @((MarkupString)_articleDropdownOption)
  140. }
  141. </select>
  142. </label>
  143. @if (_article.Status != Models.ArticleStatus.New)
  144. {
  145. <p>Файлы документа</p>
  146. <div class="upload__input-descr">Исходный файл: <a style="cursor:pointer; color:blue;" @onclick="@(() => GetArticleFile("source"))">@_article.FilenameReal</a></div>
  147. <div class="upload__input-descr" style="margin-bottom:20px">
  148. Преобразованный файл:
  149. <a style="cursor:pointer; color:blue;" @onclick="@(() => GetArticleFile("html"))">
  150. @($"{_article.FilenameReal}.html")
  151. </a>
  152. </div>
  153. }
  154. <input type="checkbox" class="checkbox__input" id="radio" @bind="@_verificationPoint.RulesViolation">
  155. <label class="сheckbox__label" for="radio">
  156. Материал сформирован не по правилам
  157. </label>
  158. <input type="checkbox" class="checkbox__input" id="radio2" @bind="@_verificationPoint.NonExpert">
  159. <label class="сheckbox__label" for="radio2">
  160. Не являюсь экспертом в этой теме
  161. </label>
  162. <input type="checkbox" class="checkbox__input" id="radio3" @bind="@_verificationPoint.AdditionalVerificationRequired">
  163. <label class="сheckbox__label" for="radio3">
  164. Требуется дополнительная экспертиза
  165. </label>
  166. <input type="checkbox" class="checkbox__input" id="radio5" @bind="@_verificationPoint.Rejected">
  167. <label class="сheckbox__label" for="radio5">
  168. Отклонить, указать причину
  169. </label>
  170. <label class="upload__label">
  171. <textarea placeholder="Причина" class="form-control upload__textarea" @bind="@_verificationPoint.RejectReason" disabled=@rejectReasonDisable></textarea>
  172. </label>
  173. <label class="upload__label">
  174. <textarea placeholder="Теги" class="form-control upload__textarea" @bind="@_verificationPoint.Tags"></textarea>
  175. </label>
  176. <div class="second-block__form__button">
  177. <button class="btn_grey" @onclick="Verify_OnClick">Валидация</button>
  178. <button class="btn_grey" @onclick="(() => SaveDocument_OnClick(Models.ArticleStatus.Verifying))">Сохранить</button>
  179. </div>
  180. </div>
  181. <div class=@_otherTabClass>
  182. <p style="margin-bottom:20px;">Файлы документа</p>
  183. @if (_article.Status != Models.ArticleStatus.New)
  184. {
  185. <div class="upload__input-descr">Исходный файл: <a style="cursor:pointer; color:blue;" @onclick="@(() => GetArticleFile("source"))">@_article.FilenameReal</a></div>
  186. <div class="upload__input-descr">Преобразованный файл: <a style="cursor:pointer; color:blue;" @onclick="@(() => GetArticleFile("html"))">@($"{_article.FilenameReal}.html")</a></div>
  187. }
  188. </div>
  189. </div>
  190. <div class="third-block">
  191. <div class="header-block header-block_third">
  192. <div class="header-block__text">Библиотека</div>
  193. <div class="header-block__span" @onclick="@(() => WidgetMenuClick(".block__dropbox", "library_menu"))">
  194. <span></span>
  195. <span></span>
  196. <span></span>
  197. </div>
  198. </div>
  199. <div class="block__dropbox" id="library_menu">
  200. <p class="block__dropbox__header__text">Сортировка</p>
  201. <p class="block__dropbox__search">Выбрать</p>
  202. <select name="" id="" class="block__dropbox__select">
  203. <option value="Верифицированные">Верифицированные</option>
  204. <option value="На верификации">На верификации</option>
  205. <option value="Отклоненные">Отклоненные</option>
  206. </select>
  207. <label for="" class="block__dropbox__search">
  208. Найти по номеру
  209. <input type="text">
  210. </label>
  211. <label for="" class="block__dropbox__search">
  212. Найти по мероприятию
  213. <input type="text">
  214. </label>
  215. <label for="" class="block__dropbox__search"></label>
  216. </div>
  217. <div class="third-block__info">
  218. <ul class="third-block__info__ul" style="cursor:pointer">
  219. @foreach (var article in _articles)
  220. {
  221. <li class="third-block__info__li" @onclick="(() => LoadDocument(article.Value.ID))">@(article.Key) | @article.Value.Name<br>@GetDisplayName(article.Value.Status)</li>
  222. }
  223. </ul>
  224. </div>
  225. </div>
  226. <ModalInfo @ref="_modalInfo">
  227. <Title>Информация</Title>
  228. <Body>
  229. </Body>
  230. </ModalInfo>
  231. <ModalLoading @ref="_modalLoading">
  232. <Body>
  233. </Body>
  234. </ModalLoading>
  235. </div>
  236. @if (_article?.ID > 0 || _article?.NounGroups?.Length > 0)
  237. {
  238. <div>
  239. Название: @_article.Name
  240. .
  241. </div>
  242. <div>
  243. Дата: @_article.PublishDate
  244. </div>
  245. <div>
  246. Автор: @_article.Authors
  247. </div>
  248. <div>
  249. Аннотация: @_article.Annotation
  250. .
  251. </div>
  252. <div>
  253. Ключевые слова: @_article.Keywords
  254. .
  255. </div>
  256. <div style="margin-left:10px ; margin-top: 10px">
  257. <p>Имя файла: @_report.FileName</p>
  258. <p>Размер: @_report.FileSize байт</p>
  259. <p>Формат: @_report.FileFormat</p>
  260. <Collapsible LabelText="Noun groups:"
  261. Collapsed="true">
  262. <ChildContent>
  263. <div style="margin-left:50px">
  264. <Collapsible LabelText="Grouped&Sorted"
  265. Collapsed="true">
  266. <ChildContent>
  267. @((MarkupString)_report.NounGroupsSorted)
  268. </ChildContent>
  269. </Collapsible>
  270. </div>
  271. @((MarkupString)_article.NounGroups)
  272. </ChildContent>
  273. </Collapsible>
  274. <Collapsible LabelText="Entities:"
  275. Collapsed="true">
  276. <ChildContent>
  277. @((MarkupString)_article.Entities)
  278. </ChildContent>
  279. </Collapsible>
  280. <Collapsible LabelText="Morph:"
  281. Collapsed="true">
  282. <ChildContent>
  283. @((MarkupString)_article.Morph)
  284. </ChildContent>
  285. </Collapsible>
  286. <Collapsible LabelText="Keywords1:"
  287. Collapsed="true">
  288. <ChildContent>
  289. @((MarkupString)_article.Keywords1)
  290. </ChildContent>
  291. </Collapsible>
  292. <Collapsible LabelText="Keywords2:"
  293. Collapsed="true">
  294. <ChildContent>
  295. @((MarkupString)_article.Keywords2)
  296. </ChildContent>
  297. </Collapsible>
  298. </div>
  299. }